package com.bosssoft.cloud.wechat.infrastructure.constant;

import lombok.Getter;

/**
 * 微信关键字Constant
 *
 * @author wcy create on 2021/6/18 14:53 下午
 */

@Getter
public class WxKeywordConsts {

    /**
     * 直接返回该字符串，则公众号不做"解析xml","报故障"等额外处理，认为该次请求正常返回
     * <p>
     * 以下内容摘抄自官方文档：
     * https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html
     * <p>
     * 假如服务器无法保证在五秒内处理并回复，必须做出下述回复，这样微信服务器才不会对此作任何处理，并且不会发起重试（这种情况下，可以使用客服消息接口进行异步回复），否则，将出现严重的错误提示。详见下面说明：
     * 1、直接回复success（推荐方式） 2、直接回复空串（指字节长度为0的空字符串，而不是XML结构体中content字段的内容为空）
     */
    public static final String SUCCESS = "success";

    /* 微信access_token在redis中的key值 */
    public static final String WX_ACCESS_TOKEN = "WX_ACCESS_TOKEN";
    /* 微信JsApiTicket在redis中的key值 */
    public static final String WX_JSAPITICKET = "WX_JSAPITICKET";
    /* 微信redis统一超时时间，包括access_token,JsApiTicket等 */
    public static final Integer WX_REDIS_TIMEOUT_COMMON = 30;
    /* 调用微信接口返回正确时的通用errCode */
    public static final String WX_RESULT_SUCCESS = "0";

    // 消息类型
    @Getter
    public static class MsgType {
        // 事件
        public static final String EVENT = "event";
        // 文本消息
        public static final String TEXT = "text";
        // 图片消息
        public static final String IMAGE = "image";
        // 图文消息
        public static final String NEWS = "news";
        // 音乐消息
        public static final String MUSIC = "music";
        // 视频消息
        public static final String VIDEO = "video";
        // 语音消息
        public static final String VOICE = "voice";


    }

    // 事件类型
    @Getter
    public static class Event {
        // 关注
        public static final String SUBSCRIBE = "subscribe";
        // 取关
        public static final String UNSUBSCRIBE = "unsubscribe";
        // 菜单跳转链接
        public static final String VIEW = "VIEW";
        // 发送模板消息事件
        public static final String TEMPLATESENDJOBFINISH = "TEMPLATESENDJOBFINISH";
    }

}
